﻿namespace MicroCloud.Authorization
{
    #region "功能权限验证接口"
    /// <summary>
    /// 功能权限验证接口
    /// </summary>
    public interface IFunctionAuthorization
    {
        #region "方法"
        #region "检查指定用户是否有执行指定功能的权限"
        /// <summary>
        /// 检查指定用户是否有执行指定功能的权限
        /// </summary>
        /// <param name="function">要检查的功能</param>
        /// <param name="principal">在线用户信息</param>
        /// <returns>功能权限检查结果</returns>
        AuthorizationResult Authorize(IFunction function, IPrincipal principal);
        #endregion
        #region "获取功能权限检查通过的角色"
        /// <summary>
        /// 获取功能权限检查通过的角色
        /// </summary>
        /// <param name="function">要检查的功能</param>
        /// <param name="principal">在线用户信息</param>
        /// <returns>通过的角色</returns>
        OnlineRole[] GetOkRoles(IFunction function, IPrincipal principal);
        #endregion

        #endregion

    }
    #endregion

}
